1. Field of the Invention
The present invention relates to parallel computing in general and more particularly to operating system optimization in a parallel computing environment.
2. Description of the Related Art
Parallel computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently. There are several different forms of parallel computing, for example bit-level, instruction level, data, and task parallelism. Parallelism has been employed for many years, mainly in high-performance computing. More recently, parallel computing has become the dominant paradigm in computer architecture, mainly in the form of multicore processors.
Parallel computers can be classified according to the level at which the computing hardware platform supports parallelism—with multi-core and multi-processor computers having multiple processing elements within a single machine, while clusters and grids using multiple computers to work on the same task. Specialized parallel computer architectures are sometimes used alongside traditional processors, for accelerating specific tasks. The advent of simultaneous multi-threading (SMT) operating environments specifically supports parallelism by executing more than one thread on a processor core and assigning different tasks of a computer program to different threads.
Thus, managing the assignment and execution of different processing tasks to different threads of execution can in of itself require sophisticated programmatic logic. While more programs can run simultaneously in an SMT environment, the performance of some of programs may show some degradation. Consequently, administrators become unsure about the effectiveness of SMT for workloads of interest and ultimately disable intelligent usage of SMT. Ironically, based upon the exhibited degradation of the workloads of interest, the administrator subsequent to SMT deactivation can experience a decrease in throughput of the workload of interest while the performance of the individual applications of the workload of interest are ensured.
Even still, in large enterprise level systems, the numerous tasks running on huge systems face performance issues that often cannot be recreated for troubleshooting, but can most-often be traced to non-optimal utilization of the system. In this regard, not only are the workloads varying constantly, but also the characteristics of a single application can vary from time to time. Of note, program characteristics determine whether leveraging of SMT will help increase to throughput or if the use of SMT will degrade performance of a subject workload. Given the dynamic nature of the workloads that run on the system, the SMT control has to be dynamic as well. Notwithstanding, current methodologies permit either a system-wide activation or de-activation of SMT and do not allow for a partial activation, or even dynamic SMT control. Consequently, critical resources of the computing environment are likely to be wasted.